Neste artigo abordarei o uso básico dos wildcards (coringas), que combinados com os comandos de terminal podem fazer mágica. Seu domínio é essencial para todo bom administrador de sistemas Linux.
Como em um artigo anterior, tentarei realizar uma interação com o leitor afim de tornar mais fácil o entendimento e aprendizado do assunto. Então vamos meter a mão na massa e abusar de seu uso. Tudo com a maior segurança. :)
Tudo ocorrerá na maioria das vezes no diretório /tmp, pois tudo é apagado assim que se rebota o sistema.
Nesta primeira parte, tratarei apenas da listagem, ou seja, explorar o que se tem em um diretório, e na segunda parte teremos um interação com os comandos cp e mv.
Vamos lá, navegue até o /tmp:
# cd /tmp
Dentro deste diretório criaremos quinze arquivos iniciados com "teste" e contendo números em seu final, vamos lá?
Criei os arquivos, pode seguir este exemplo em uma primeira vez apenas para entender seu uso, depois pode criar seus próprios testes, isso ajuda e muito no entendimento:
Vamos ver como ficou o cenário, e para já começar, listaremos apenas os arquivos que nos interessam, que consequentemente são os que acabamos de criar, para isso usaremos o (*):
Para que possamos entender o uso dos wildcards, precisaremos realizar testes, ou seja, entender como é feito, então trabalharemos em cima destes arquivos, movimentando-os para lá e para cá, removendo, realizando cópias, listagens, enfim, praticando.
Sem muitas delongas, vamos à pratica!
Primeiro listaremos os arquivos que contenham apenas um número no final de seu nome, usaremos o []:
Perfeito, tente agora listar arquivos com dois números no final de seu nome, veja, para que consiga realizar tal listagem precisaremos repetir o uso dos [] na expressão. Mas porque? Para cada casa usamos um par de colchetes [], e assim sucessivamente. Se quisermos listar, por exemplo, arquivos que contenham o ano de criação, precisaremos usar 4 pares de colchetes, um para cada casa, vamos lá então:
# ls teste[1-9][0]
teste10 teste20 teste30 teste40
Percebem a diferença entre os dois?
# ls teste[1-9][0-5]
teste10 teste20 teste25 teste30 teste40 teste45
Já que com arquivos sem extensão já estamos nos saindo bem, que tal esquentarmos um pouco as coisas?
Bom, até aqui já conseguimos fazer listagens básicas certo? Mas e se fossem por suas extensões, se elas tivessem alguns outros caracteres, enfim, vamos ver estes cenários:
Algo bem básico, vamos criar arquivos chamados teste.txt teste.conf e 123teste.txt 123teste.conf.
# touch 123teste{.txt,.conf} teste{.txt,.conf}
Opa, aqui já outra coisa que podemos reparar, podemos criar arquivos de várias extensões diferentes sem precisar repetir o comando, então já podemos perceber também que poderemos listá-los sem problema, vamos lá.
Dentre todos aqueles nosso arquivos em /tmp, eu quero listar os seguintes: otesteo, 123teste.txt, 123teste.conf, teste.txt e teste.conf. Vamos ver como fica?
# ls *teste{o,.txt,.conf}
123teste.conf 123teste.txt otesteo teste.conf teste.txt
Opa, perfeito, mas talvez alguém possa estar perdido neste ponto {o,.txt,.conf}. Certo, vejam em nossa busca, tínhamos uma única certeza inicial, todos os arquivos continham teste, então este é o nosso ponto de partida.
Analisando percebi que os arquivos de que necessitava continham números antes do teste e outros arquivos algumas extensões, assim ficaria mais simples, porém um de nossos arquivos continha uma letra antes e depois.
Então o *teste eliminou qualquer caractere antes deste, porém se tivéssemos usado *teste*{.txt,.conf}, não conseguiríamos suprir nossa busca, pois o * colocaria em nosso resultado qualquer caractere, então acabaríamos com um monte de arquivos.
O que fizemos para eliminar o problema, colocamos o {o,.txt,.conf} que só poderia me retornar qualquer arquivo que contivesse teste no meio e terminasse com uma letra o, como foi o nosso caso.
Claro este foi um exemplo simples, mas entender isso será fundamental, digo isso pois agora iniciaremos uma parte onde o cuidado e a certeza são as chaves para uma boa busca. xD
Espero que tenham entendido o que aqui quis passar, agora apresentarei a vocês a interação dos wildcards com outros comandos, vamos lá?
[8] Comentário enviado por Teixeira em 30/01/2009 - 22:58h
Grande Maran!
Os wildcards ja eram muito importantes nos tempos do DOS,
e nao perderam nada dese aimportancia ate hoje.
Voce abordou com muita felicidade o assunto.
Acho que ficou bem pratico e compreensivel,
pois eeees materia em manuais por ai sempre foi de uma chatice tremenda, que voce conseguiu evitar.
Ficou bem leve.
Parabens!
[9] Comentário enviado por Teixeira em 30/01/2009 - 22:59h
Grande Maran!
Os wildcards ja eram muito importantes nos tempos do DOS,
e nao perderam nada dessa importancia ate hoje.
Voce abordou com muita felicidade o assunto.
Acho que ficou bem pratico e compreensivel,
pois eeees materia em manuais por ai sempre foi de uma chatice tremenda, que voce conseguiu evitar.
Ficou bem leve.
Parabens!
[10] Comentário enviado por Teixeira em 30/01/2009 - 23:01h
Grande Maran!
Os wildcards ja eram muito importantes nos tempos do DOS,
e nao perderam nada dessa importancia ate hoje.
Voce abordou com muita felicidade o assunto.
Acho que ficou bem pratico e compreensivel,
pois essa materia em manuais por ai sempre foi de uma chatice tremenda, que voce conseguiu evitar.
Ficou bem leve.
Parabens!